{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*H2 ground state energy with VQE and SPSA*_\n",
    "\n",
    "This notebook demonstrates using Qiskit Chemistry to plot graphs of the ground state energy of the Hydrogen (H2) molecule over a range of inter-atomic distances using VQE with SPSA optimizer. It is compared to the same energies as computed by the NumPyMinimumEigensolver. SPSA is designed to work well with probabalistic/noisy measurements. And with TwoLocal makes this a suitable configuration to run on a near term device.\n",
    "\n",
    "This notebook has been written to use the PYSCF chemistry driver."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processing step 20 --- complete\n",
      "Distances:  [0.5   0.525 0.55  0.575 0.6   0.625 0.65  0.675 0.7   0.725 0.75  0.775\n",
      " 0.8   0.825 0.85  0.875 0.9   0.925 0.95  0.975 1.   ]\n",
      "Energies: [[-1.05829268 -1.08180075 -1.09793729 -1.1138453  -1.11814995 -1.13218731\n",
      "  -1.13825136 -1.13598473 -1.13927649 -1.13977132 -1.13627134 -1.13358835\n",
      "  -1.13483392 -1.13233099 -1.1265055  -1.1248459  -1.12186936 -1.11861696\n",
      "  -1.1135186  -1.10743771 -1.1019722 ]\n",
      " [-1.05515979 -1.07591366 -1.09262991 -1.10591805 -1.11628601 -1.12416092\n",
      "  -1.12990478 -1.13382622 -1.13618945 -1.13722138 -1.13711707 -1.13604436\n",
      "  -1.13414767 -1.13155121 -1.12836188 -1.12467175 -1.12056028 -1.11609624\n",
      "  -1.11133942 -1.10634211 -1.10115033]]\n",
      "Hartree-Fock energies: [-1.04299627 -1.06306214 -1.07905074 -1.0915705  -1.10112824 -1.10814999\n",
      " -1.11299655 -1.11597526 -1.11734903 -1.11734327 -1.11615145 -1.11393966\n",
      " -1.1108504  -1.10700581 -1.10251055 -1.09745432 -1.09191404 -1.08595587\n",
      " -1.07963693 -1.07300676 -1.06610865]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pylab\n",
    "from qiskit import BasicAer\n",
    "from qiskit.aqua import aqua_globals, QuantumInstance\n",
    "from qiskit.aqua.algorithms import NumPyMinimumEigensolver, VQE\n",
    "from qiskit.aqua.components.optimizers import SPSA\n",
    "from qiskit.circuit.library import TwoLocal\n",
    "from qiskit.chemistry.drivers import PySCFDriver\n",
    "from qiskit.chemistry.core import Hamiltonian, QubitMappingType, TransformationType\n",
    "\n",
    "molecule = 'H .0 .0 -{0}; H .0 .0 {0}'\n",
    "algorithms = [{'name': 'VQE'},\n",
    "              {'name': 'NumPyMinimumEigensolver'}\n",
    "             ]\n",
    "\n",
    "start = 0.5  # Start distance\n",
    "by    = 0.5  # How much to increase distance by\n",
    "steps = 20   # Number of steps to increase by\n",
    "energies = np.empty([len(algorithms), steps+1])\n",
    "hf_energies = np.empty(steps+1)\n",
    "distances = np.empty(steps+1)\n",
    "\n",
    "aqua_globals.random_seed = 750\n",
    "\n",
    "print('Processing step __', end='')\n",
    "for i in range(steps+1):\n",
    "    print('\\b\\b{:2d}'.format(i), end='', flush=True)\n",
    "    d = start + i*by/steps\n",
    "    for j in range(len(algorithms)):\n",
    "        driver = PySCFDriver(molecule.format(d/2), basis='sto3g')\n",
    "        qmolecule = driver.run()\n",
    "        operator =  Hamiltonian(transformation=TransformationType.FULL,\n",
    "                                qubit_mapping=QubitMappingType.PARITY, two_qubit_reduction=True)\n",
    "        qubit_op, aux_ops = operator.run(qmolecule)\n",
    "        if algorithms[j]['name'] == 'VQE':\n",
    "            optimizer = SPSA(max_trials=200)\n",
    "            var_form = TwoLocal(qubit_op.num_qubits, ['ry', 'rz'], 'cz', reps=3)\n",
    "            algo = VQE(qubit_op, var_form, optimizer)\n",
    "            result = algo.run(QuantumInstance(BasicAer.get_backend('qasm_simulator'),\n",
    "                                seed_simulator=aqua_globals.random_seed,\n",
    "                                seed_transpiler=aqua_globals.random_seed,\n",
    "                                shots=1024))\n",
    "        else:\n",
    "            result = NumPyMinimumEigensolver(qubit_op).run()\n",
    "            \n",
    "        result = operator.process_algorithm_result(result)\n",
    "        energies[j][i] = result.energy\n",
    "        hf_energies[i] = result.hartree_fock_energy\n",
    "    distances[i] = d\n",
    "print(' --- complete')\n",
    "\n",
    "print('Distances: ', distances)\n",
    "print('Energies:', energies)\n",
    "print('Hartree-Fock energies:', hf_energies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEWCAYAAABIVsEJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdeVxU1fvA8c/DoqAi7rigIi6ACoLghppppqVo7ua+ZKYt2mJ737K+2dey+pXlkpa55JZripbmlvuG4gYqbiXuKwLKfn5/zDCBsgwwA4jn/XrNS7lz7r3PjDjP3HPueY4opdA0TdO0nLIp6AA0TdO0h5NOIJqmaVqu6ASiaZqm5YpOIJqmaVqu6ASiaZqm5YpOIJqmaVqu6ASiaVYiIkNFZHtBx6Fp1qITiJYvROSciLS/b5vpA1ZEiovITyLyt4hEi0ioiDydzTGriMhMEbkoIjEickZEZouIpzVfi6WIyHMictz4eq+IyFoRcTI+N1tEPs3BsfKUrIz7Jxvfx7SPqrk9plb06QSiFRZ2wHmgDeAMfAD8KiJuGTUWkfLATqAE0BpwAhoDfwFPZrKPnaWDzi0RaQN8BvRTSjkBXsDigo2KXUqpUvc9LlryBIXp30DLO51AtEJBKRWrlBqvlDqnlEpRSgUDZwH/THZ5DbgDDFJKnVYGt5VSPyulvgMQETcRUcZv+v8Am4zbu4rIMRG5LSJbRMQr9aDG9nXS/Gy6EhCRx0UkUkTeEJGrInJJRIalaVteRFaJyB0R2QvUzuIlN8HwgX3Q+PpvKqXmKKWiRWQkMAB4y3gVsNp4/HdE5LTxiiVMRLobt3sB04EWxva3jduLi8iXIvKP8Qpnuog4mv2PkobxCnKciBwWkSgRWSwiDmmeDzJeNd4WkZ0i4nPfvm+LyGEgVkTsRKSxiBw0vpYlxuOlvs9HRaRLmv3tReS6iPjlJnbNenQC0QolEXEB6gHHMmnSHlihlEox43BtMHzD7ygi9YCFwKtARWAtsFpEipkZWmUMV0jVgOeAKSJS1vjcFCAOqAIMNz4ys8cYz8ci0lJEiqc+oZSaAcwHvjBeBaR+mJ7GcLXlDHwM/CIiVZRS4cAo/r2CKGNsPxHDe+gL1DHG/KGZrzMjfYCngFqADzAUwPjBPgt4ASgP/ACsSvuagH5AZ6AMhs+dFcBsoByGf4/uadrOBQam+bkTcCk12WqFh04gWn5aafyGetv4LXlqRo1ExB7DB+gcpdTxTI5VAbicZp+uxuNGi8j6+9qON17h3AP6AmuUUn8qpRKBLwFHINDM15AIfKKUSlRKrQViAA8RsQV6Ah8az3UUmJPZQZRS24AeGLrd1gA3RORr43Ey22eJUuqi8QptMRABNM2orYgIMBJ4zXh1E42hy+zZLF5b87T/PiJy+r7nJxvPfxNYjSExYTzPD0qpPUqpZKXUHCAeaH7fvueN/wbNMXRZTja+j8uBvWna/gJ0EpHSxp8HAfOyiFsrIDqBaPmpm1KqTOoDePH+BiJig+HDIgF4OYtj3cDwTR8ApdQq4zFfA+6/mjif5u9Vgb/T7JdifL6ama/hhlIqKc3Pd4FSGK5mUsdxUv1NFpRSvxuvLsoBz2D4Rj8is/YiMjhNN9FtoCGGRJqRihjGh0LStP/DuD0zu9P++yil7u+Cu5zm76mvG6Am8MZ9Xw6qY3ivU93/b3BBpa/kanreOO6yA+gpImWApzF8odAKGZ1AtELD+K35J8AF6Gm8QsjMRqCbMeFkJ+0H1UUMH3hpz1kduGDcdBfDB2+qymYcH+AakGQ8Vqoa5uxovKLYiGGMpmEGMSMiNYGZGJJqeWOyPApIRu2B68A9oEGahOCslCqF5Z0HJtyXfEoopRamaZM2vktANeN7nyrt+waGq7eBQG8MXXMX0AodnUC0wmQahrGKLsaujqx8DZQF5olIbTFw4t9ulcz8CnQWkSeMXWVvYOhu2Wl8PhToLyK2IvIUhvGTbCmlkoHlwHgRKSEi9YEhmbUXkWdE5FkRKWuMvanxXLuNTa4A7ml2KYnhQ/iacf9h/JtsUtu7po7lGK+sZgL/JyKVjPtUE5GO5ryeHJoJjBKRZsbXUlJEOhv/PTKyC0gGXjYOqD/Dg11xKzF0743FMCaiFUI6gWiFgvEb9gsYEsBl+XcewoCM2iulrmPoS48DtgPRGD78nYDRmZ1HKXUCwzfb7zB8S++CIWElGJuMNW67jeFOqJU5eBkvY+jWuYxhgPjnLNreAp7HMI5xB0O//ySlVGpXzU9AfWOX0EqlVBjwFYYP3yuAN4ZunlSbMNxwcFlErhu3vQ2cAnaLyB1gA+CRRUwt5MF5IE2ye9FKqf3G1/K98XWdwjjAnkn7BAzjP89heJ8HAsEYEnlqm3vAMgwD9suzi0ErGKIXlNI0raCJyB5gulLq5zTbPgTqKaUGZr6nVpD0FYimaflORNqISGVjF9YQDLcF/5Hm+XIYrlBmFFSMWvZ0AtE0rSB4AIcwdGG9AfRSSl0CEJHnMQzM/66U2lpwIWrZ0V1YmqZpWq7oKxBN0zQtVx6pwmYVKlRQbm5uBR2GpmnaQyUkJOS6UuqBSagFlkBEpDcwHsN9/02NtwJm1O4p4FvAFvhRKTXxvucnA8PNmSDl5ubG/v0ZnkbTNE3LhIhkWFWhILuwjmK4FzzTQTJjXaApGEoZ1Af6GSdopT4fgGEymaZpmpbPCiyBKKXCjZO6stIUOKWUOmOcfLQIQ82g1OQyCXjLupFqmqZpGSnsg+jVSF+ELZJ/i969DKxKvfUvMyIyUkT2i8j+a9euWSlMTdO0R49Vx0BEZAMZF6N7Xyn1Wx6OWxVDkbXHs2trXFthBkBAQIC+Z7mAJCYmEhkZSVxcXEGHomlaJhwcHHB1dcXe3t6s9lZNIEqp9tm3ytIF0lfpdDVu88OwQM4pY0HPEiJySilV58FDaIVBZGQkTk5OuLm5kb4Iq6ZphYFSihs3bhAZGUmtWrXM2qewd2HtA+qKSC1jldFnMXRbrVFKVVZKuSml3IC7OnkUbnFxcZQvX14nD00rpESE8uXL56iXoMASiIh0F5FIoAWwRkTWGbdXFZG1AMaFe14G1gHhwK9KqcyWONUKOZ08NK1wy+n/0QKbB6KUWoFhXeT7t1/EsAZy6s9rMaxbndWxrLFIjsnWk9c4ejGKFx/XFzmapmmpCnsXVqGw49R1vl5/khsx8dk31gqtUqXSf8+YPXs2L7+c1aq5DwoNDWXt2iy/z+TJ7NmzqVixIr6+vvj6+jJ48OAcH2PLli0EBQVZITpNS08nEDP09HclKUXxW+jFgg5FK0BJSUlZJpCkpKQMt+dU3759CQ0NJTQ0lLlz9WJ8WuGlE4gZ6rk44V3NmWUHIgs6FM1KVq9eTbNmzfDz86N9+/ZcuXIFgPHjxzNo0CBatmzJoEGD+PDDD1m8eDG+vr4sXrz4geeTk5N58803adKkCT4+Pvzwww+mc0yaNMm0/aOPPspRfKGhoTRv3hwfHx+6d+/OrVu3ADh16hTt27enUaNGNG7cmNOnT6fbb9++ffj5+T2wXdMs4ZEqppgXPRtXY/zqMI5fvoNn5dIFHc5D7ePVxwi7eMeix6xftTQfdWmQZZt79+7h6/vvkuk3b96ka9euALRq1Yrdu3cjIvz444988cUXfPXVVwCEhYWxfft2HB0dmT17Nvv37+f7778HDAkm7fMzZszA2dmZffv2ER8fT8uWLenQoQMRERFERESwd+9elFJ07dqVrVu38thjjz0Q5+LFi9m+fTsAY8eOZdiwYQwePJjvvvuONm3a8OGHH/Lxxx/zzTffMGDAAN555x26d+9OXFwcKSkpnD9vmHu7c+dOXnnlFX777Tdq1KiR9zdZ0+6jE4iZuvpWY8LacJaFRPJ+5/rZ76AVOo6OjoSGhpp+Tk0GYJin0rdvXy5dukRCQkK6++C7du2Ko6NjpsdN+/z69es5fPgwS5cuBSAqKoqIiAjWr1/P+vXr8fPzAyAmJoaIiIgME0jfvn1NCSr1GLdv36ZNmzYADBkyhN69exMdHc2FCxfo3r07YJgElio8PJyRI0eyfv16qlatmrM3StPMpBOImcqVLEZbj0qsOHiRt5/yxM5W9/7lVnZXCgXhlVde4fXXX6dr165s2bKF8ePHm54rWbJklvumfV4pxXfffUfHjh3TtVm3bh3vvvsuL7zwQrrtU6ZMYebMmQAWHZyvUqUKcXFxHDx4UCcQzWr0p2AO9PR35XpMPNsirhd0KJqFRUVFUa2aoczanDlzMm3n5OREdHR0ps937NiRadOmkZiYCMDJkyeJjY2lY8eOzJo1i5iYGAAuXLjA1atXeemll0wD5pl90Ds7O1O2bFm2bdsGwLx582jTpg1OTk64urqycuVKAOLj47l79y4AZcqUYc2aNbz77rts2bIlZ2+GpplJJ5AcaOtRibIl7FmqB9OLnPHjx9O7d2/8/f2pUKFCpu3atm1LWFiYaRD9fiNGjKB+/fo0btyYhg0b8sILL5CUlESHDh3o378/LVq0wNvbm169emWZiO43Z84c3nzzTXx8fAgNDeXDDz8EDMlk8uTJ+Pj4EBgYyOXLl037uLi4EBwczEsvvcSePXty8G5omnkeqTXRAwICVF4XlBq/6hgL9v7Dvvfa41zCvIJjmqFP3svLq6DD0DQtGxn9XxWREKVUwP1t9RVIDvVs7EpCUgrBR/ScEE3THm06geRQw2qlqedSimUhuhtL07RHm04gOSQi9GzsyoF/bnPmWkxBh6NpmlZgdALJhe5+1bARWH7gQkGHommaVmB0AsmFSqUdaF23IssPRJKS8ujchKBpmpaWTiC51NPflYtRcew6c6OgQ9E0TSsQOoHkUof6Ljg52OnBdE3THlk6geSSg70tQT5V+f3oZWLiLVPGW7O+lJQUgoKC8Pb2NhUdHDp0aIHN1h4/fjyzZ8/Oss2WLVsYOnQo586dw9XVlZSUlHTP+/r6miYKzpgxA09PTzw9PQkICEj3uh5//HE8PDxMa4306tXrgRg2b96Ml5cXr732msVeo1Z06QSSB738q3EvMZnfj1wq6FA0Mx05coSrV69y5MgRqlevXtDh5Iibmxs1atQwlTQBOH78ONHR0TRr1ozg4GB++OEHtm/fzvHjx5kxYwYDBw7kwoV/b/aYP3++qXRKasHHtNq2bcvhw4f5+eefTeVYNC0zuphiHjSuUZZaFUqy7EAkvQMerg+jAvX7O3D5iGWPWdkbnp6YbbPbt29TqVKldNucnZ0pVqwYYPiQHjJkCKtXryYxMZElS5bg6enJ3r17GTt2LHFxcTg6OvLzzz/j4eHB7NmzWblyJbGxsURERDBu3DgSEhKYN28exYsXZ+3atZQrV47Tp0/z0ksvce3aNUqUKMHMmTPx9PSkVKlSWVb6BShWrBjOzs4A9OvXj0WLFpkq8y5atIhnn30WgM8//5xJkyaZSrE0btyYYcOGMWXKFD777LNMj39/DPb29pQpU4Y7d+5Qvnz5bN9T7dGlr0DyQETo4VeN3Wducv7m3YIORzNDcnIyNjbpf+2//fZbAgMDTT9XqFCBAwcOMHr0aL788ksAPD092bZtGwcPHuSTTz7hvffeM7U/evQoy5cvZ9++fbz//vuUKFGCgwcP0qJFC9OKgiNHjuS7774jJCSEL7/8khdffBGAcePG0bdvXwCmT5/O9OnTH4g5MDCQb7/9FoA+ffqwcuVK0+qHixcvpl+/fgAcO3YMf3//dPsGBAQQFhZm+nnAgAGmLqw333zzgRhS2djYkJycbNZ7qj269BVIHnVvXI2v/jzJioMXGPNE3YIO5+FgxpWCtYSGhuLq6pplmx49egDg7+/P8uXLAUO13iFDhhAREYGIpOveadu2LU5OTjg5OeHs7EyXLl0A8Pb25vDhw8TExLBz50569+5t2ic+Pv6B844aNSrb+F1cXGjYsCEbN27ExcUFOzs7GjZsmP0LN5o/fz4BAQ+UNHpAtWrVOHz4MO3btzf72NqjR1+B5JFr2RK0cC/P8gORPEqFKR9G/fv3Z/z48YwYMSLLdsWLFwfA1tbW9E3/P//5D23btuXo0aOsXr2auLi4B9qD4Zt76s82NjYkJSWRkpJCmTJlTGMPoaGhhIeH5/p1pHZjLVq0yHT1AVC/fn1CQkLStQ0JCTErYdxvzJgxdOnShU8++STXcWpFn04gFtDT35VzN+4S8vetgg5Fy8KCBQuYNGkS33zzTY73TbteSHZ3Td2vdOnS1KpViyVLlgCGRacOHTqU4xhS9ejRg7Vr17J48WLT+AfAW2+9xdtvv82NG4a5SaGhoaxYseKBRazM8dlnn7Fp0yZT2XhNy4hOIBbwdMPKlChmyzK9Tkih5+Hhwc2bN3O831tvvcW7776Ln5+f6aokJ+bPn89PP/1Eo0aNaNCgAb/99tsDbTIbA7lfmTJlaNGiBS4uLri7u5u2d+3aleeee46WLVtSp04dWrVqxcqVK6lYsaKpTdoxkKy6p27dukXdurpLVsuaXg/EDCsiVhB6LZSPAz/OtM3rv4by57Er7PugPQ72tnkJs0gqLOuB7N27l1deeYXdu3cjIgUdjtUkJSUxbNgwUlJS+OWXX3L0WhMSEqhcuTKRkZGUKFHCilFqhZFeD8TCrt69yvKI5VyMyXwNkF6NXYmOT2J92JV8jEzLKV9fX6pXr46vr69pImFRZGdnx7x585g/f36OksfmzZsJCAhg6NChOnlo2dIJxAyd3DsBsPbs2kzbNHcvT7Uyjrq0SSFXrFgxli5dyqFDhx66iYT5IXUi4ddff13QoWgPAZ1AzFDdqTp+lfwIPh2c6Z1WNjZCd79qbIu4xpU7cRm20TRNK0p0AjFTkHsQp6NOc+LWiUzb9GhcjRQFKw/qdUI0TSv6dAIxU4eaHbATO4JPB2faxr1iKRrXKMMyPSdE07RHgE4g5oi+TJmLobRybcXas2tJTsm8xENPf1dOXonh6IU7+RigZq6HuRovGOag2NjYcPjwYdPzDRs25Ny5cxaJx83NDW9vb3x8fOjQoQOXL1/Osr2IMHDgQNPPSUlJVKxYkaCgIABWrVrFxIlZVx64ePGiqTJwfhk6dCi1atUy3dKcWsrGnHitbfbs2bz88ssWO9b48eMBOHHiBA0aNEhXESGvdAIxx8b/wuLBBNV8imv3rrH38t5Mmwb5VKWYnQ1LQ4ruHT4Ps4e5Gm8qV1dXJkyYYLXjb968mcOHDxMQEJBlEUaAkiVLcvToUe7duwfAn3/+aZpwCYa5Ke+8806Wx6hatWqGlYGtbdKkSabKADt37gTMi/dhcf98JQ8PD44dO8bRo0c5ffq0Rc5RIAlERHqLyDERSRGRTOssiMhTInJCRE6JyDtptouITBCRkyISLiJjrBqwVxDER9EmyYZS9qUIPpN5N5azoz0d6ruw6tBFEpJSMm2nFQxzqvF+9NFHNG7cGG9vb44fPw4Y5o+0aNECPz8/AgMDOXHCMBY2e/ZsunXrxpNPPombmxvff/89X3/9NX5+fjRv3tw0afH06dM89dRT+Pv707p1a9Nxc1qNFyAoKIhjx46ZYkirVKlSpr8vXbrUdOUydOhQRo8eTfPmzXF3d2fLli0MHz4cLy8vU5v7PfbYY5w6dYpZs2bx6quvmrbPnDkz3XohnTp1Ys2aNQAsXLgwXXmVtN+mhw4dypgxYwgMDMTd3d2UNM6dO2eq52Xu+/n444+TOqfr+vXruLm55Wj/zKSN9/Tp0zRv3hxvb28++OCDdO/tpEmTaNKkCT4+Pnz00Uem1+Hl5cXzzz9PgwYN6NChgymxTp48mfr16+Pj42OqHnDz5k26deuGj48PzZs3T3dVCYbqBzVr1jSt/xIbG0v16tVJTEzM9Pdp6NChjBo1imbNmvHWW2/h6OiYLm4w1FO7fft2lu+DuQqqmOJRoAfwQ2YNRMQWmAI8CUQC+0RklVIqDBgKVAc8lVIpIlIps+NYhHtbsC+Jw8l1PFnzSdadW8cHzT/A0S7j//g9/V0JPnyJTcev8lTDylYN7WH0+d7POX7zuEWP6VnOk7ebvp1tu8yq8aaVWo136tSpfPnll/z444+marx2dnZs2LCB9957j2XLlgGGarwHDx4kLi6OOnXq8Pnnn3Pw4EFee+015s6dy6uvvsrIkSOZPn06devWZc+ePbz44ots2rSJcePGmc6bOgv9/qKKgYGB6aoF29jY8NZbb/HZZ58xZ84cs9+jW7dusWvXLlatWkXXrl3ZsWMHP/74I02aNCE0NBRfX9907YODg/H29qZPnz5MmDCBSZMmYW9vz88//8wPP/z7X/fZZ5/lk08+ISgoiMOHDzN8+PB0a5akdenSJdN6JV27ds2w68qc9zMr5u7/5ptv8umnnwLQoEED5s+fn+44Y8eOZezYsfTr1y9dhYD169cTERHB3r17UUrRtWtXtm7dSo0aNYiIiGDhwoXMnDmTPn36sGzZMgYOHMjEiRM5e/YsxYsXN314f/TRR/j5+bFy5Uo2bdrE4MGDCQ0NNZ3H2dkZX19f/vrrL9q2bUtwcDAdO3bE3t4+098ngMjISHbu3ImtbcYTmi1ZablAEohSKhzIboJTU+CUUuqMse0i4BkgDBgN9FdKpRiPd9WqAds7QN32cGItQf3nsuLUCrac38LTtZ7OsHnrOhWo6FScZQcidQIpZB72aryp+vfvz4QJEzh79qzZ+3Tp0gURwdvbGxcXF7y9vQHDh+e5c+dMCaRt27bY2tri4+PDp59+SqlSpWjXrh3BwcF4eXmRmJho2hfAx8eHc+fOsXDhQjp16pRlDN26dcPGxob69etz5UrGk26zez+zY+7+kyZNynLsZdeuXaxcuRIwvN+pyX79+vWsX78ePz8/AGJiYoiIiKBGjRqmcRUw/P6kjk35+PgwYMAAunXrRrdu3QDYvn276UtIu3btuHHjBnfupB877du3L4sXL6Zt27YsWrSIF198Mdvfp969e2eaPODfSstNmzbN4l00T2Eu514NSDuQEAk0M/69NtBXRLoD14AxSqmIjA4iIiOBkQA1atTIfTSeXSDsNwISFS4lXAg+E5xpArGztaG7XzVmbT/LjZh4ypcqnmG7R5U5VwrW0L9/f4KDg7MdMM+qGu+KFSs4d+4cjz/++APtIftqvJZiZ2fHG2+8weeff55ue9ovZWkrBqeNM22MaeNMtXnzZtOiVKlGjBjBZ599hqenJ8OGDXsgnq5duzJu3Di2bNliKuaYkbTnzexOxezeTzC8/tSuncxeZ1b754VSinffffeBIpXnzp1Ld25bW1tTF9aaNWvYunUrq1evZsKECRw5Yt6Cal27duW9997j5s2bhISE0K5dO2JjY7P8fSpZsmSWxxw1ahQdO3Zkz549zJw506w4MmO1MRAR2SAiRzN4PGOBwxcH4oy1WWYCszJrqJSaoZQKUEoFpC0ql2P1OoCNPTYn1tDJvRM7L+zkZlzm/ak9G7uSlKJYdSjz8ida/ioq1XhTDR06lA0bNnDt2jXTNhcXF8LDw0lJSWHFihV5PkeqZs2acf78eRYsWJBujCPV8OHD+eijj9JdmViTm5ubqXS9tQbgmzdvbrpCWLRokWl7x44dmTVrFjExMQBcuHCBq1cz7wRJSUnh/PnztG3bls8//5yoqChiYmJo3bq1qdtsy5YtVKhQgdKlS6fbt1SpUjRp0oSxY8cSFBSEra1tnn+fvvzyS2bOnJnn5AFWTCBKqfZKqYYZPB4sQ5qxCxjGOVK5GreB4WpkufHvKwAfy0SdBQdnqPUYhAcTVKszSSqJdefWZdrco7ITDauV1hV6C5miUI03VbFixRgzZky6D6+JEycSFBREYGAgVapUyXGcWenTpw8tW7akbNmyDzzn6urKmDHWvZclrXHjxjFt2jT8/Py4fv16ro7x5ptvmm7j9fX1JSEhId3z33zzDV9//TU+Pj6cOnXKdCNDhw4d6N+/Py1atMDb25tevXoRHR2d6XmSk5MZOHAg3t7e+Pn5MWbMGMqUKcP48eMJCQnBx8eHd955J9PxrL59+/LLL7+kWzXSnN+nzFi00rJSqsAewBYgIJPn7IAzQC2gGHAIaGB8biIw3Pj3x4F95pzP399f5cm+WUp9VFqpy0dVj996qP5r+mfZfNb2M6rm28Hq+KU7eTtvERAWFlbQISillNqzZ49q2rSpSklJKehQHjqdO3dWGzZsKOgw8k1sbKzp92ThwoWqa9euBRxR3qWkpKgGDRpk+f8xo+eA/SqDz9SCuo23u4hEAi2ANSKyzri9qoisBVBKJQEvA+uAcOBXpdQx4yEmAj1F5AjwPyDrJeYsxbMzIIarEPcgDl87zD93/sm0eddGVbGzEX0VUog8KtV4Len27dvUq1cPR0dHnnjiiYIOJ9+EhITg6+uLj48PU6dO5auvvirokPLkxIkT+Pr60qhRI+rVq2eRY+r1QHLqp46QGMvlQUvpsLQDoxuNZrTv6EybPz93P6Hnb7PrnXbY2T668zYLy3ogmqZlTa8HYk1eQXD5CJUT4mhauSnBZzKv0AvQJ6A616Lj+eNY1iUhHgWP0pcVTXsY5fT/qE4gOeVpqPFDeDCd3TvzT/Q/HLme+S15T3hWwr1iSaZtOf1If4A6ODhw48aNR/o90LTCTCnFjRs3cHBwMHufwjwPpHAqVwtcGsLxYNoHLOHT3Z8SfCYYn4oZ3whmYyO88Jg7by87wvZT12ldNw+3Ej/EXF1diYyMTHfLqaZphYuDg0O2E23T0gkkNzyD4K/PcUq4x+PVH+ePs3/wZpM3sbexz7B5N79qfP3nSab/dfqRTSD29vbUqlWroMPQNM2CdBdWbnh1AZShtIl7ELfib7Hr4q5Mmxe3s+W5VrXYceoGhyMtU8RM0zStoOkEkhsuDaCsG4QH06paK5yLO2dZoRegX9MaODnYMf0vy5RR1jRNM4dSihUHI0lOsfz4o04guSFi6MY6+xf2ifd4yu0pNv+zmdjE2Ex3cXKwZ1Dzmvx+9DJnr2feTtM0zVKSklN4e9lhXlt8iLVHLln8+DqB5JZXF0hOgIj1BLkHEZccx8Z/Nma5yxEZ7WIAACAASURBVLCWtbC3tWHGVn0VommadcUlJvPSggP8uj+SsU/UJcjHsqVtQCeQ3HNtCiUrQfhqGlVsRLVS1bJcLx2golNxevu7sizkAlfvxGXZVtM0Lbdi4pMYPnsf645d4aMu9XntyXrZLZ+RKzqB5JaNDXh2glMbkKR4gtyD2HN5D1fvZr00ycjH3ElKSWHWjnP5E6emaY+Um7EJDJi5mz1nb/J/fRsxrKX17n7UCSQvPLtAQgyc2UJn986kqBR+P/t7lrvULF+STt5VmL/7b+7EJWbZVtM0LScuRd2jzw+7OH45mhmD/OnuZ/6cjtzQCSQvaj0GxUvD8dXUcq5Fw/INWXNmTba7jWpTm+j4JObvzrwQo6ZpWk6cuRZDr2m7uBIVx9zhTXnCy8Xq59QJJC/sikG9jnDid0hOIqh2EOE3wzl161SWuzWs5kzruhWYteMscYmWWZtY07RH19ELUfSevov4pGQWjmxOM/fy+XJenUDyyjMI7t6A87vp6NYRW7FlzVnzrkKuRcez4uCFbNtqmqZlZveZGzw7YzcO9rYsGRVIw2rO+XZunUDyqk57sC0O4cFUcKxA86rNWXtmLSkqJcvdAmuXx8fVmR/+Om2VCT6aphV9G8KuMGTWXqo4O7B0dAtqVch6PXRL0wkkr4qXgtrt4HgwKEWQexAXYy9y8OrBLHcTEUa1qc25G3dZp0u9a5qWQ8tCInnhlxA8q5Tm1xdaUMXZMd9j0AnEEryCIOo8XAqlXfV2ONo5ZlvaBKBjg8rUqlCS6X892qXeNU3LmVnbz/LGkkM0dy/H/BHNKFuyWIHEoROIJdR7GsQGwoMpYV+CJ2o8wbpz60hITshyN1sbYeRj7hyOjGLn6Rv5FKymaQ8rpRRfrz/BJ8FhPNWgMrOGNqFU8YIrqm5WAhGRsiLSQETcRUQnnfuVLA81Wxq6sYAg9yCiE6LZFrkt2127+1WjolNxXWRR07QspaQoPvztGJM3naJvQHWmDGhMcTvbAo0p02QgIs4i8p6IHAF2Az8AvwJ/i8gSEWmbX0E+FLy6wLXjcP0Uzao0o7xDebO6sRzsbRneshbbIq5z9EJUPgSqadrDJjE5hVcXhzJv99+80MadiT29sbWxfGmSnMrqamIpcB5orZTyUEq1UkoFKKWqAxOBZ0TkuXyJ8mHg2dnw5/HV2NnY8XStp/kr8i+i4rNPCgOa18CpuB3T9FWIpmn3Sa1rterQRd552pN3n/aySl2r3Mg0gSilnlRKzVNKPbACklIqRCn1qlLqJ+uG9xBxdoWqfhBu7MaqHURiSiJ//v1ntruWdrBnQPOa/H7kEn/f0KXeNU0zuBodR98fdrHz9A2+6OnDqDa1CzqkdLIdzxCDgSLyofHnGiLS1PqhPYQ8g+DCfrhzkfrl6lPLuZZZ3VgAw1u6YWdjw4ytZ6wcpKZpD4PT12LoMXUnZ67F8uOQAPo0qV7QIT3AnAHxqUALoJ/x52hgitUieph5dTH8eXwNIkKQexAhV0K4GHMx210rlXagp381loREci063sqBappWmB345xa9pu3kXkIyi0Y2p61HpYIOKUPmJJBmSqmXgDgApdQtoGBuOi7sKnpA+boQvhqATrU6AbD27Fqzdh/5WG0Sk1P4ecdZq4WoaVrh9mfYFfrP3I2zoz3LXwykUfUyBR1SpsxJIIkiYgsoABGpCGRdp+NR5tUFzm2HuzdxdXLFr5IfwaeDzZooWKtCSZ5uWJl5u/8mWpd617RHzvw9f/PCvP14VC7NstGB1Cyfv6VJcsqcBDIZWAG4iMgEYDvwmVWjeph5BYFKhpPrAMOckNNRpzl8/bBZu49qU5vouCQW7tWl3jXtUaGU4qv1J3h/xVEe96jEwuebUb5U8YIOK1vZJhCl1HzgLQxJ4xLQTSm1xNqBPbSqNobS1dJNKnSyd2Je2DyzdvdxLUNg7fL8uO0s8Um61LumFXWJySm8tfQw3206xbNNqjNjkD8lihXc7PKcMHdWeQXgrlLqe+C6iFhvjcSHnYhhTsipjZBwlxL2Jejl0Ys///6TCzHmlW4f/XhtrkbHs1KXete0Ii02PokRc/azJCSSV9vX5X89vLGzfXiKfZhzG+9HwNvAu8ZN9sAv1gzqoecZBEn34PRGAPp79scGGxaELzBr91Z1KtCgaml+2HpGl3rXtCLqWnQ8z87YzfZT15nYw5tX29crNBMEzWVOqusOdAViAZRSFwEnawb10KvZEhzLmiYVVi5ZmQ5uHVgWsYyYhJhsd08t9X7mWix/hulS75pW1Jy9HkvPaTs5dTWGmYP9ebZpjYIOKVfMSSAJynALUepdWIX7toDCwNbOUKH35O+QbLibanD9wcQmxrI8YrlZh3i6YWVqli/BtL/O6FLvmlaEhJ6/Tc9pO4mJT2LhyOa087T+2uXWYk4C+VVEfgDKiMjzwAZgZl5PLCK9ReSYiKSISEAW7Z4SkRMickpE3kmz/QkROSAioSKyXUTq5DUmi/LqAnFRcM5QkbdBhQb4u/gzP3w+SSlJ2e5uZ2vD863dOXT+NjtO6VLvmlYUbAy/Qr8ZuylV3I7lowPxLcRzPMxhzl1YX2IorLgM8AA+VEp9Z4FzHwV6AFsza2CcfzIFeBqoD/QTkfrGp6cBA5RSvsAC4AMLxGQ5tduCfUlTNxYYrkIuxl5kwz8bzDpEL39XXMs68t/gMBKT9dQbTXuYLdjzD8/P3U9dl1IsGx2IWz4vP2sNWSYQEbEVkc1KqT+VUm8qpcYppbKvDmgGpVS4UupENs2aAqeUUmeUUgnAIuCZ1EMApY1/dwayrxeSn+wdoc4TcHwNpBg+/Nu4tqGGUw3mHptrVreUg70t/wmqz4kr0czb9be1I9Y0zQqSUxQT1oTx3oojPFavIgufb05Fp8I/x8McWSYQpVQykCIizvkUz/2qYSgpnyrSuA1gBLBWRCKBQRhKzD9AREaKyH4R2X/t2jWrBvsAry4QcxkuhABga2PLwPoDOXL9CIeuHTLrEB3qu9CmXkX+78+TXI2Os2a0mqZZWGx8Ei/MC2HmtrMMaVGTHwcHULIAVxC0NHPGQGKAIyLyk4hMTn2Yc3AR2SAiRzN4PJP93tl6DeiklHIFfga+zqiRUmqGcR2TgIoVK1rgtDlQtwPY2MHx1aZNz9R+htLFSjM3bK5ZhxARPupSn7ikZD7/PbsLNk3TCotLUffoPX0Xm45f4eOuDfj4mYYP1RwPc5iTCpcbH2mZdVuQUqp9jiNK7wKQtoaxK3DBWI+rkVJqj3H7YuCPPJ7L8hzLQK3HDOMg7T8GEUrYl6CPRx9mHZ3F+ejzVHfKvkSze8VSjGjtzrQtp+nfrDr+NcvlQ/CapuXWkcgoRszdR2x8Mj8NbVJoq+nmlTnpsIxSak7aB1DW2oEZ7QPqikgtESkGPAusAm4BziJSz9juSSA8n2LKGa8ucPO0qRsLoJ9nP2zE/ImFAK+0q0MVZwc+/O2YnlyoaYXYH0cv0+eHXdjZ2LBsdGCRTR5gXgIZksG2oXk9sYh0N45ftADWiMg64/aqIrIWQCmVBLwMrMOQIH5VSh0zbn8eWCYihzCMgbyZ15iswrs3ODjDzn97/SqVqMTTbk+zPGI5dxLumHWYEsXseL+zF8cu3mGBLrSoaYWOUorpf51m9PwQPCo7sfKllnhULtpzrjNNICLST0RWA+4isirNYzNwM68nVkqtUEq5KqWKK6VclFIdjdsvKqU6pWm3VilVTylVWyk14b79vZVSjZRSjyulCudSfsWdoMkICFsFN/5d83xQ/UHcTbrL8pPmTSwE6OxdhcDa5fly3QluxiZYI1pN03IhISmFd5YdYeLvx+nsXYVFI4vOnVZZyeoKZCfwFYZv/l+lebwBdLR+aEVI0xfAthjs/Hf6jFd5L5pWbsov4b+QmGLe2h8iwsddGxAbn8SkdcetFa2maTkQdTeRIbP2snj/eV5pV4fJz/rhYG9b0GHli0wTiFLqb2AbEKeU+ivN44CxC0kzl5ML+PaD0AUQc9W0eXD9wVy5e4U/z5k/taauixNDA91YtO88h87ftka0mqaZ6dz1WLpP3UHI37f4uk8j3ujggY3Nw1UQMS8K+zyQoiNwDCQnwJ4fTJtau7bGrbQbc8PMm1iYamz7ulQoVZwPVx0jRQ+oa1qB2HPmBt2m7uDW3QTmP9+MHo1dCzqkfGfVeSBaGuVrG+7I2jcT4g0VeW3EhkH1B3HsxjEOXD1g9qGcHOx5r5Mnh87fZmlIpLUi1jQtE0tDIhn40x7KlyzGypda0sTt0by13pwEshz4D4aaVSFpHlpOtRxrKLB4YI5pU5faXXAu7szcY+ZNLEzVzbcaTdzKMvGP40Td1euna1p+SElRfPHHccYtOUTTWuVY/mLLQr9uuTWZU0xxTkaP/AiuyHENgJqtYNcUU5l3RztH+tTrw+bzm/nnjvm35xoG1Bty+24CX/+pZ6hrmrXFxifx0oIDTN1ymn5NazB7WFOcHe0LOqwCZc6KhHVFZKmIhInImdRHfgRXJLUcC3cuwNFlpk39PPtha2PLL+E5W+ixftXSDGpek3m7/ybsonnzSTRNy7m/b8TSY+pO1h27zAedvfise0Psi1hZktww5x34GUPp9CSgLTAXvaRt7tV9EirVhx3fgnHgvGKJinSq1YmVp1YSFR+Vo8O9/qQHZUsU46NVR/XCU5pmBVtOXKXLd9u5Eh3HnOFNGdHa/aFbetZazEkgjkqpjYAopf5WSo0HOls3rCJMxHAVcjUMTv27Lsjg+oO5l3SPpSeX5uhwziXsefspT/adu8XK0AuWjlbTHllKKaZuOcWw2fuoWsaR1S+3onXdfC7IWsiZk0DiRcQGiBCRl0WkO1DKynEVbQ17QmlX2P6NaZNHOQ+aV2nOgvAFJCbnbFC8l78rjaqX4bO1x4mO0wPqmpZXqeMdX/xxgiCfqix/MZDq5UoUdFiFjjkJZCxQAhgD+GOoO5VRfSzNXLb20OJF+Hs7RO43bR5cfzBX713lj3M5KyxsYyP895kGXI+J59sNEZaOVtMeKeeuG8Y7/jh6mfc6eTL5WV9KFCs6a3hYkjl3Ye1TSsUopSKVUsOUUj2UUrvzI7girfFgQ5HFHd+aNrWs1hJ3Z3fmhc3L8XiGj2sZnm1Sg593nuPklWhLR6tpj4QtJ67S9ft/xztGPlZbj3dkIatiiqvvK6KY7pGfQRZJxZ2gyfMQvtpUZDF1YmH4zXD2X9mfzQEe9GZHD0oVt2P8qmN6QF3TckApxZTNhvGOamVL6PEOM2V1BfIlhuKJXwNepC+o+JX1Q3sENHuwyGKQexBli5fN8cRCgHIlizGuowc7T99gzZFLloxU04qs1PGOSetO0MWnKstH6/EOc2VVTDG1eOIWIOa+gop/5V+IRVipSuDb31BkMfoKAA52DvT17MuWyC2cizqX40P2b1qDBlVLM2FNOLHxuualpmUltRjiH0cv834nL7591hfHYo9GJV1LMHcmjO4PsZbAVwxFFvf+W2Sxr0df7G3sczyxEMDWRvjkmYZciopjyuZTloxU04qUzcbxjqvR8cwd3oznH9PzO3IqqzGQcqkPwFZEyt63TbMEU5HFHyHeMPhdwbECQe5B/HbqN27H5bxku3/NsvTyd2XmtjOcuRZj6Yg17aGWOt4xPM14R6u6FQo6rIdSVlcgIcB+45+lgQP8W0gx5yO8WuZavWossvjvuMeg+oOIS45jyckluTrk20954mBvyxtLDpGQlGKpSDXtoRYdl8iL8/V4h6VkNQZSSynlbvzz/od7fgZZ5FXzB7fWhiKLSYalauuWrUtg1UAWHF9AQnLOl6+t6FScL3r6cPCf23y6JszSEWvaQ+dIZBRB321nfdgVPd5hIVl1YblltaMYPHorqFhLBkUWB9cfzPV711l5amWuDvm0dxVGPubO3F1/s/yAXjdEezQppZi94yw9p+0kISmFRSOb6/EOC8mqC2uSiCwTkcEi0kBEKolIDRFpJyL/BXZguL1Xs4Q67R8oshhYNRC/Sn5MCZ1CbGJsrg77VkcPmruX470VRwi/pCv2ao+WqLuJjPolhPGrw2hdtwJrx7R+ZBd/soasurB6Y1hIygOYgmF99N+AEcAJoJ1SyvzFvLWspRZZvBYOEX8aNwnjAsZxM+4mPx35KVeHtbO14bt+jXF2tGfULyFE3dO1srRHw8F/btFp8jY2hl/lg85e/DgkgLIlixV0WEVKdmuihyml3ldKPa6U8lBK+Sml+iulflFKxeVXkI+M1CKLacqb+FT04elaTzM3bC6XYy/n6rAVnYozdUBjLty6xxu/hup11LUiLSVFMWPraXpP34UILB0dqEuwW4leEaUwsbWHFi89UGTx1cavopTi2wPfZrFz1vxrluODzl5sCL/KtL9OWyJaTSt0bsYmMGLufj5be5z2Xi6sGdMa3+plCjqsIksnkMKm8WBwKAM7/i31XrVUVQbVH0TwmWCOXj+a60MPCXTjGd+qfLn+BFtPXrNEtJpWaOw9e5NO325je8R1PnmmAdMGNn7kl5y1Np1ACpvipaDJCAgPhuv/ziQf4T2Ccg7lmLRvUq4LJYoI/+vhTb1KToxddJDIW3ctFbWmFZiUFMPEwH4zd+Ngb8PyFwMZ3MJNd1nlA3PWRF8uIp2Ni0pp+SG1yOKuf4sslipWipd8X+LA1QNs/Gdjrg9dopgd0wf5k5SseHH+AeISky0RsaYViGvR8Qz5eS+T1p2gk3cVVr/SiobVnAs6rEeGOUlhKtAfw4qEE0XEw8oxaaUqgd8ACF1oKrII0KNuD2o71+brkK9zvGphWrUqlOSrPo04HBnFx6v1JEPt4bTz1HU6Td7G3rM3mdjDm8nP+uLkoLus8pM5C0ptUEoNABoD54ANIrJTRIaJiP7XspYWLxuKLO6ZbtpkZ2PHuCbjOB99noXHF+bp8B0aVGb047VZuPcfft1/Pq/Ralq+SUpO4es/TzLgpz2UdrDjt5db8mzTGrrLqgCY1S0lIuWBoRjmgBwEvsWQUPQ8EGspXxvqd4V9P5mKLAK0qtaKwKqB/HD4B6Lio/J0ijeerEfLOuX5YOVRjl7I27E0LT+cvhZDr+m7mLwxgp6NXVn9Sis8K5cu6LAeWeaMgazAMImwBNBFKdVVKbVYKfUKUMraAT7SWo6F+CjY/3O6zW8EvEFMYgzTD03PZEfz2NnaMPlZP8qXLMaoX0K4fTfnNbc0LT+kpChmbT9Lp2+3ce5GLJP7+fFl70Z6rfICZs4VyGSlVH2l1P+UUumWuVNKBVgpLg0MRRZrPQa7p0JSvGlzvbL16F6nO4uOL8rVolNplS9lmGR45U4cry7Wkwy1wuf8zbv0m7mbT4LDaFWnAutffYyujaoWdFga5iWQsiLS477HEyJSKbcnFZHeInJMRFJEJNMkJCKzROSqiBy9b3s5EflTRCKMf5bNbSyFXqvXIPoSHP413eaX/V6mmG0x/i/k//J8Cr8aZfmwSwO2nLjG5E0ReT6eplmCUooFe/7hqW+2cuziHb7o5cOPQwKoVNqhoEPTjMxJIM8BPwIDjI+ZwNvADhEZlMvzHgV6AFuzaTcbeCqD7e8AG5VSdYGNxp+LJve2UNnHUN4k5d9bbis4VuA57+fYdH4T+y7vy/NpBjarQY/G1fh2YwSbT1zN8/E0LS8uRd1jyM/7eG/FEXxrlGHda4/RJ6C6HigvZMxJIPaAl1Kqp1KqJ1AfwxK3zTAkkhxTSoUrpU6Y0W4rcDODp54B5hj/Pgfolps4HgoihquQGxFwfE26pwbXH0zlkpWZtG8SKSpvi0aJCBO6eeNZuTSvLgrl/E09yVDLf0oplh+IpMP/bWXf2Zv895kGzBvejGplHAs6NC0D5iQQV6XUlTQ/XwWqK6VuAgVV2tUlzXjMZcAls4YiMlJE9ovI/mvXHtLyHfWfgbK1YPv/mUq9AzjYOTDGbwzhN8MJPhOc59M4FrNl+sDGpCjFqF9C9CRDLV9di47nhXkhvP7rITwrO/H72NYMauGGjY2+6sir3FavyI45CWSLiASLyBARGYKhpPsWESkJZLpgt4hsEJGjGTyesVTwAMrwzmT67iilZiilApRSARUrVrTkqfOPja3hjqyLB+Bs+l6/zu6daVC+Ad8e+JZ7SffyfKqa5UvyTV9fjl28w9vLDpOsB9W1fLD2yCU6frOVLSev8X4nLxaNbIFbhZIFHVaREHYjjIFrBxIZbflF5cxJIC8BPwO+xsdc4CWlVKxSqm1mOyml2iulGmbw+M0CcV8RkSoAxj+Lfqd9o35QysVwFZKGjdjwZpM3uXr3KnOOzclk55x5wsuFNzt68FvoRcYsPKjXVNes5vbdBMYsPMiL8w/gWtaRNa+04vnH3LHVVx15lpySzI9HfmTAmgFcjonk+r3rFj9HljdRi4gtsMGYKJZl1TafrQKGABONf1oiKRVu9g7Q/EXY8BFcPAhV/UxP+bv4075Ge2YdnUXPuj2pWCLvV1ovta1DMVsbJqwNJzYhiWkD/PX60ZpFbTp+hbeXHeFWbAKvP1mP0Y/Xxt5Wl9yzhPPR53l/+/scvHqQjiXd+M/xXTj7XoZc3zubsewWlEoGUkTEotXJRKS7iEQCLYA1IrLOuL2qiKxN024hsAvwEJFIEXnO+NRE4EkRiQDaG38u+gKGQ3Fn2P7NA0+95v8aiSmJfB/6vcVO9/xj7nzW3Zu/Tl5jyM97iY7TqxlqeXc1Oo5XFx1k+Oz9lC9ZjJUvtWTME3V18rAApRQrIlbQa1UvTt06yf+oyKSjW3H2CIKaLSx+PslucEVEfgP8MJQtMS3MrZQaY/ForCwgIEDt378/+4aF2YaPDd1Yr4QYyp2k8cW+L/gl7BeWdFmCRznL1bz8LfQCb/x6iPpVSzNnWFO9LKiWK0nJKczb/Tdfrz9JfFIKL7Rx5+V2dShup69sLeFm3E0+3vkxm85voqlzHT49fZQq96Lh6c8N6wzl4RZoEQnJaOK4OQlkSEbblVKW6XDPR0UigcRchf9rCL79oEv6FQqj4qPovKIzXuW8mPHkDIveM78x/Aqj5x+gZrkS/DKiGS56MpeWA/vP3eQ/vx0j/NIdWtetwMddG+BeUVdCspStkVv5z47/EJ0QzdhSHgw6tBabil7Q+2eo5JXn42eWQMypxjsH+BXYrZSak/rIc0Ra7phKvS+A6PRrpDsXd2aUzyh2X9rNtgvbLHraJ7xcmD2sCRdv36P39F16nohmlusx8Yxbcohe03dx+24C0wY0Zu7wpjp5WMjdxLt8susTXtr4EhWKlWZRvBNDDq3FJmA4jNxskeSRFXOKKXYBQoE/jD/7isgqq0alZS3wFUhJMtTIuk9fj77ULF2Tr/Z/RVJKkmVPW7sCv4xoRtS9RHpP38Wpq9HZ76Q9kpJTFPN2naPdl1tYefACo9rUZuMbbXjau4qeTW4hh68dpvfq3iw9uZRhLi1ZeDyUetfOQu85EPR/YG/9yZfmjFqNB5pinPOhlAoF3K0Yk5adcu7QoDvsmwX30k/Fsbe15zX/1zgTdYZlJy1/45xfjbIsfqE5SSmKPj/s1mXgtQcc/OcWz0zZzn9+O0bDas788Wpr3nnaU1fOtZDElESmhE5h8O+DSUxO4KdSjXh990KKVfSAUdugQf4V5jAngSQqpe7/lNATAwpay1chIRr2//TAU+2qtyPAJYApoVOITrD8VYJn5dIsGdUCR3tb+s3Yzb5zGVWb0R41N2MTeHf5YXpM28m16Hi+6+fH/BHNqFPJqaBDKzLORp1l8NrBTD80nc5VWrLsahRNjqwylDsa9juUrZmv8ZiTQI6JSH/AVkTqish3wE4rx6Vlp4oP1GkPu6dBYvoZ6CLCuCbjuBV/iymhU6xy+loVSrJkVAsqOhVn0E972HryIS0To+VZSoqham67r7bw6/5IRrSqxcY3HqdLo6q6u8pClFIsOr6IPqv7cD76PF+5dmbCnqU43b0JA5dD+/Fgm/8LxJqTQF4BGgDxwELgDvCqNYPSzNTqNYi9BqHzH3iqQfkG9PPsx/zw+Wy/sN0qp69axpFfR7XAvUIpRszZzx9HL2W/k1akHImMovu0nby34gj1XJxYO6Y173euT6niurvKUi7HXmbUhlFM2DMB/4o+LLepTodt06BGCxi1A+o8UWCxZXsbb1FSJG7jTUsp+OlJw629rxwA2/T/aeOS4ui3ph83426yrOsyKjhWsEoYUfcSGfbzXkLP32ZSr0b09He1ynm0wuPi7Xt8tymCRfvOU75kcd7v7Ek332r6isOClFKsOLWCSfsmkaySed29J313/4JEX4R2/4HAMWCTP5Mv8zIPpB4wDnAjTekTpVQ7C8dodUUugYChxPui/tDzJ/Du9cDTJ2+dpF9wP5pWacrUJ6Za7T94bHwSL8wLYfup63zyTAMGt3Czynm0gnU1Oo6pm0+zYM8/KBQDm9fktSfrUdoh/7tPirLLsZcZv2s8Oy7sIMAlgE9KeFB98xfgXA16zoLqTfI1nrwkkEPAdCAEMNX3VkqFWDpIayuSCSQlBaY2B9tihjswMkgQC8IX8L+9/+Odpu8wwGuA1UKJS0xmzMKDrA+7wutP1uPltnV0Ke4i4lZsAtO3nmbuzr9JSE6ht78rL7erg2vZEgUdWpGilGLV6VV8vvdzklQSr/q+zLMnd2FzaAF4dIZuU8GxTL7HlVkCMaejMkkpNc0KMWmWYGNjKPX+24twaiPUbf9Ak36e/dhxcQdf7f+KAJcAi5Y5ScvB3papAxrz1tLDfP3nSbZHXGdiT289aewhdicukR+3nWXW9rPEJiTxTKOqjG1fj1q61LrFXb17lY93fczWyK00rtSY//qOocaatyFyH7R5G9q8k29dVuYy5wpkPIZy6SswDKQDYFxQ6qFSJK9AAJISYLKv5WGFVwAAIABJREFUYdGpYWsybHIz7iY9V/XEuZgzi4IW4WBnvVIkSimWhETyaXAY8UkpvPZkPUa0qoWdLpb30LibkMTsnef44a8zRN1L5OmGlXntyXrUc9G35FqaUorgM8H8b+//SExOZEzjMQwo7YnN4kEQFwXdpxsWlStAeenCOpvBZqWUeugmExbZBAKwayqsexee+xOqN82wyc4LO3lhwwv09ejLB80/sHpIV+/E8cHKo6wPu4J3NWc+7+lD/aqlrX5eLffiEpOZv+cfpm05xfWYBNp5VuL1J+vRsJpFC3JrRtfvXefjXR+z5fwWfCv68t+W/8Xt3B5Y9Yph/Z9+C6Cyd0GHmfsEUpQU6QQSHwPfNIQagYZfukx8ue9L5oTNYXLbybStkel6YBajlGLtkct8tOoot+8mMvrx2roCayGUkJTCr/vP8/2mU1y+E0fLOuV5/UkP/GuWLejQiiSlFL+f/Z3P9n7GvcR7jGk8hoEe/bDd9Ans/A5qtoI+c6Ckde6czKkcJxAReUsp9YXx772VUkvSPPeZUuo9q0VrJUU6gQBs/h/8NRFe3AOVPDNskpCcwMC1A7kUe4llXZdRqYSFV5jJxK3YBP4bHMbygxeoW6kUn/fyoXEN/eFU0JKSU1hx8ALfbozg/9s787CqqvWPf15mZBBRUBQBR8B51srUtBStTJtNS7vN2azlte7vlt1u5fXabbKbWVa3W5pp3axMc7bMGRU1Z1FAQVCRQUA4nPX7Y20V9aCIBw7I+jzPec7ee62z9rvOPmd/95reNyUzn86RdRjTvyVXN6saN64rkSP5R3ht9WssTlpMu3rt+FvPv9HUKxjmPAB7FkHXByHuTZcsDCyN8ghIvFKq07nbjvarC1e8gJw4qlshrYbA0NLnPSRmJXLXj3fRLqQdH93wEW5SeWMTS3em89K3W0jNLuD+q5swdkBL4yPJBWTlFfHNhmT+u/oA+4/m0bZRbcb0b0nvliFmLUcFMn//fP6++u/kFeUxuuNoRrYaifuxfTDjbsjcD4Mm6cBxVYzyuHOXUrYd7RuqAn51odNI2DILjieXmq1J7SaM6zqONalrnBZHvaxcFx3Kgmd7Mbx7BNNXJjLg7RWs3OP8WM0Gx2w9mMULszfT/Y1FvPbTdur6e/PhiE7MfeIa+kSHGvGoIDLyMnhu2XM8v/x5wv3DmXXzLP7U5k+471kM0/pqp6gjf6iS4nEhLvTop0rZdrRvqCpcNRrWTdOu3uPeKDXbrS1uZeWhlbwb/y7dGnSjdb3WlWZigI8nrw1py83tGvLnb7cw/OM13N21MeMHxVLbt+o0268UCoqK+SkhlS9WH2BT8nF8Pd0Z2rERI3pE0rqhGRyvSOzKzre7v+Wt9W9xsvgkT3d6mlGtR+Eh7jo09aJXoEEbuPsrCIpwtbmXzIW6sIrRIWwF8AVORRASwEcpVe3+6Vd8F9YpvnsM/vgfPLsNagWXmi3rZBa3zb0NHw8fZt00i1qelb8orKComH8t2sW0FfsICfDmtSFtuaFV/Uq340ok6WgeX645wKz1yWTmFdE0xI97e0Rya6dwI9SVQGJWIhNWTWDD4Q10bdCVl696mcjASO38dO5Tuqeg1RC9ONCraq+rMbOwqEECkr4DPugOfcZDnz9fMOu6tHU8sOABhjQfwqvXvFpJBp5PQspxXpidwI60HG5sF8ZTfVsQ3cCsObhUiu2K5bvS+WLVAZbtysBNhP6t6nNvj0iualbXdFFVAkXFRXy67VOmbp6Kt4c3Y7uMZWjzofq7zzoIXw+HQxuh71/g2rGXFau8sjACQg0SEIAZwyBplW6FXOTp5t34d5m2ZRqTek8iLiqukgw8n0KbnanL9/Le0j0U2ux0ighiWLcIbmrXEF8vM+33QhzNPcms9Sl8ueYAKZn5hAZ4M6xbBMO6RdCgtolfX1kkZCTwyqpX2J25m/6R/RnfffwZJ6YHVsGs+6AoD279CGJudK2xl4AREGqYgCSv1Z56O4+C/n8H79LdiRTZixj18ygSsxKZPXg2Df0bVp6dDsg8Ucic+BRmrE1ib8YJAnw8uLVjI4Z1jyCmgVmIeIoTJ238uvsI87emMm9LGoXFdno0DebeHlH0b10fT7Pyv9LIK8rjvY3v8eX2LwmpFcJfuv/lzDor20lY+jr8/q4e5xg2s8JjlTsbIyDUMAEB+GmsHlAPCIPrJ0DbO0r1pZOck8wdP9xBdJ1opg+Yjrub65/4lVKsTTzGjLVJzNuaZlolQPKxPBZvP8ziHems2XeMwmL7aYEd0SOSFsbVSKWzImUFr61+jbQTadwZfSfPdHoGfy/rgS1tC3z7CKRvg473woDXwaf6PQQZAaEGCgjolsjP4+BQPIR3hbiJEN7ZYdYf9v7Ai7+9yOgOo3m0/aOVbOiFcdQqGdqxEfdc4a0SW7Gd+KTjLN5xmCXb09mdngtA0xA/+sWE0jemPl2i6pjWhgs4mn+Uiesm8nPizzSt3ZQJV0+gQ2gHnVhsg5Vvw7I3wbcODH4Pol3XPXy5GAGhhgoIaJfvCTP1lMHcw9B+GPR7GQLDzsv651//zPzE+XwW99mZP0MVwlGrpKPVKrn5CmmVZOUVsWxXOkt2pLNsZwZZ+UV4uAndmwbTN6Y+fWNCjTdcF3LK5fqk9ZM4UXSCh9s+zANtH8DL3UtnOLIH/veo9qLbeijc+NYFZ0NWB4yAUIMF5BQnc+DXybBqCrh5Qq8x0GM0eJ4ZZM0pzOGOH+4A4JubvyHAq+p2iZTWKunZvB6xYYGE1/GtFrOOlFLsSc9lyY50Fu9IZ8OBTIrtimA/L66LDqVfbCg9W9QzQZuqAMnZyby6+lVWp66mQ0gHXrn6FZoFNdOJdjus+xgW/hU8vOHGyQ6DvFVHjIBgBOQ0x/bBL/8HO36EoEgY8HeIuen0dMJN6ZsYNX8UfSP6MqnXpCoxHnIhHLVKAAJ9PIgJC6RVWCCxYQG0CqtNi/r++Hi6pj5FxXYOHM1jT3ouezNy2ZOee3o7r1DHaosNC9RdU7GhtA8Pwt0E5KoSFNgK+HTrp3y85WM83T15ttOz3BF9xxk3QMeT4fvRkLgcml8Pg9932MKvrhgBwQjIeexdCvPHQ8Z2aNJLO3Crr1ekf77tc/65/p/c3vJ2/trjr9XiSR50HIsdaTn8cSib7an6tSMt5/QN2t1NaFrPj9iwQFo1DCTWEpfQAOdNdc0rtLE3/QR7MnL0e3ouezJy2X/kBDb7mf9bw9o+NAv1p1mIPzENAujVMoSGQb5Os8PgHJYnL+eNtW9wMPcgcVFxjO0ylvp+1mJXpWDzDD3OaC/WD2OdR1WLtR2XghEQjIA4pNgGGz6FpX/XwWs63w/XvQR+dXkn/h0+3vIxI1uNZEyXMdVGRM7FblccOJZ3WlC2p2bzx6FsDmUVnM5Tz9+L2LBA6vl7n/d5R/8RR/+azLwi9qbncvB4/ulj7m5CZN1aNA/xp3nomVfTEH/8vY0TyapMck4yE9dOZHnKcprWbsr47uPpEdbjTIbcDPjhadj5kw6jMOQDCG7iOoMrECMgGAG5IHnH9IyRdR/rNSN9XkR1+ROvr5/EzJ0zq+TMrMvleF4h21NztKBYwpJTYDsvX2m6ee5hfx8PmoX4nyUWkXX98PIwM6SqEwW2AqZvnc4nWz7B3c2dx9s/zvDY4XiWdK/+x1z48Rkdh6ff/0GPx6GKd/VeDpcTE91QE6gVDIP+AV3u191a88chu39h/PBvyLPlMWXTFPw8/bi31b2uttRpBNXy4qpmdbmqWV1Xm2KoIixLXsaba9/kYO5BBkYNZEyXMWe6q0B7zf15nJ7VGNYehk6tdosCnYlLBERE7gBeAWKBbkoph80CEZkO3ASkK6XalDg+CbgZKAT2AvcrpY5XtN01gtBYuPc7PYd90Su47V3ChKsnkG/L5x/r/kEtj1rc1vI2V1tpMDiVkt1VzWo345P+n9AtrERo6OxU3Trf8KkWkd7joNfzVSrokytwVQtkK3ArMPUi+T4D3gf+c87xhcB4pZRNRCYC44FxzjayxiKip/du+AwWTcCjWT/evPZN8mx5TFg1AT9PP+KaVN9FUQbDKQpsBXyy9ROmb5mOh5sHY7uM5Z7Ye/B0s4Th4AZY/SFs+1YPkkcPgt7PQ8OOrjW8iuASAVFKbQcuOiirlFohIlEOjv9SYnc1cGVMtq5KeHjBdX+Bbx+Ebd/i1fZ2/tXnXzy68FHG/zoeXw9fejfu7WorDYZyoZRiWfIyJq6byMHcgwxqMogxXcboEM/FNtj2Haz+NySvAa8A6PoQdH8Ygpu62vQqxZUwuvcn4GdXG3FF0uY2qN8GlrwGxUX4evgypd8UooOjeW7Zc6xNXetqCw2GSyY5O5nRi0fz1NKn8PXwZfqA6UzsNZFQ8dRBnt5pD9+M0l4b4t6E5/6AgW8a8XBAhQmIiCwSka0OXrc48RwvATbgywvkeVhE1ovI+oyMDGedumbg5qZdnmQmQrzuRfT38ufD6z8kIjCCJ5Y8weaMzS420mAoG1kns5i8fjK3fH8L8enxjO0yllk3z6Kre2348Tl4qxUsellPxb37K3gyHno8Vi2dH1YWLp3GKyLLgLGlDaJbeaKAH0sOolvHRwGPAP2UUnnnf/J8zDTecqAUfDoIju2FpzaBl45amJGXwcj5Izl+8jifDviU6OBoFxtqMDimsLiQmTtmMjVhKjmFOdzS/Bae7PAEoalbdDfVnkXg7gVt74Qej0KDtq42ucpR2jTeatmFJSJxwAvA4LKKh6GciMD1L+vm/JoPTx8OqRXCtP7TqOVRi4cXPkxiVqILjTQYzkcpxfz98xn8v8FMWj+JtvXa8k3c5/zNK4rQT2+G/94GqQl64eyzf8CQKUY8LhGXCIiIDBWRFOAq4CcRWWAdbygi80rkmwGsAqJFJEVEHrCS3gcCgIUisklEPsRQcUT0gJYD9dTe/MzThxv5N2Ja/2kAPPTLQxzKPeQqCw2Gs4g/HM+IeSN4fvnz+Hn6MbXT83xY4E30JzfBT89pZ4dDp8KzW6H3C+Af4mqTqyVmJbqhbBzeBv++Bq55Gm6YcFbSzmM7uX/B/QR5B/F53OeE1DJ/RoNr2J+1n7fj32Zx0mJCfevxZJ3O3LxvDe6pCeDhC21u1b6qwrtecf6qKhLjygQjIJfNtw/DH9/DUxsh8Oywt5szNvPQLw/RyL8Rnw74lCCfIBcZaaiJHCs4xr83/ZvZu2bj5ebBA55h3Lt3Pb6FJyC0tfaw0PYO8DW/y/JwRY2BGFxEn/F6MdXyf5yX1D6kPe/1fY+k7CQeW/QYuYW5LjDQUNMosBXw8ZaPGTRnIN/s/JrbityZt28PD+9ei2+rofDAInhsJXR7yIhHBWAExFB2gpvoJ7n4/8DRvecldw/rzuQ+k9lxbAejF48msyDTQSEGw+VjV3a+3/M/bpo9gHfi36FbznG+TTnIXwq9qRv3Dxi7Uw+KNzZdVRWJ6cIyXBq56fBOBx3f+fbpDrPM3z+fl359iWDfYCb3nky7kHaVbKThSkXZ7Szf8Q1TtkxlR0EGbU6eZExWPl1aDtahCBp1NoJRARhvvAbn4B8KVz0OKybpAfWw9udliYuKo3FAY8YsG8PI+SN5oesL3B19d7WNJ2JwIYV5cGgjKnkNS5OW8GF+Its93QgvKuIf9kAGdHgKt3Z3gk9tV1taIzEtEMOlU5Cl3T006gwj5pSaLetkFi/+9iIrUlYwsMlAXrnqFWp51qpEQw3VCqXg+AFIXgcpayF5LfbDW1ni48mHQbXZ6e1FY/Hh4bBrubHNSDwbtDOtjUrCtEAMzsOnNlw7Bn75CyT+Ck2udZittndt3uv7Hp9s+YT3N73PrmO7eOu6t2ha2/gUMgBF+XBoIySvhZR1+v1EOgB2Tz8WNYpmavNYdhVlEeXfmNc7PMbAJgPxcDO3raqCaYEYykdRPrzbCWo3ggcWXvRJcHXqasatGEeBrYAJ10wgLsq4g6+x2Aph4V9h3TSwWxEg6zSBxt0oDu/CQk/F1AM/sydrL1GBUTzS/hEGRg3E/QqO+FfVMetAMALidDZ8Dj88pR3Pxdx40eyHTxxm7PKxbMrYxIjYETzX+bmzw4QarnyyU+GbkdpNescREH0jhHeluFYwC/YvYGrCVPZl7aNp7aY80u4RBkQNMMJRBTACghEQp1Nsgw+6g5sHPPZ7mWJCF9mLeGv9W/x3+39pH9Kef/b+Jw38GlSCsQaXs3+ldpNeeAJueR/a3IrNbmP+/vl8lPARiVmJNA9qziPtHuGGyBuMcFQhzEJCg/Nx94C+/wcZOyDh6zJ9xNPNk3HdxjGp9yR2Z+7mrh/vYnXq6go21OBSlIJVU+Dzm7Vr9IeWYGs1mLl75zLk+yGM/3U8Hm4eTO49mTmD5xDXJM6IRzXBtEAMl4dS8FEfyDsGT67XTurKyL6sfTy39DkSsxMZ3WE0D7Z9EDcxzzRXFCdzYe4TOsJfzE1kDnyDOUm/8PXOr0k7kUZ0nWgebf8ofSP6mmtfhTFdWBgBqTD2LoUvhkDcRB1P4RLIK9Jx1uclzqNXeC9e7/k6tb3NnP4rgiO7YeZwOLqbHT2f4Csf4ad9P1FoL6R7WHdGxI6gd3hvsz6oGmAEBCMgFcrng7XH3qc3gXfAJX1UKcXXO79m4rqJ1K9Vn8l9JtO6busKMtRQKfwxF9v/HmexXy2+imhFfPZefD18ubnpzQyLGUbzOs1dbaHhEjACghGQCiVlA3zcF/q8CH3GlauIhIwExiwfw9H8owyLGcaDbR+kjk8dJxtqqFCKbWQufIk5279iZp1gDoudRv6NGBYzjCHNh5jWZTXFCAhGQCqcr0fA3mW6FeJXr1xFZBZkMnn9ZH7Y9wO+Hr6MbDWS+1rfh5+nn3NtNTid7Sm/89Wi55incil0E3o06MY9sSPoFd7LDIpXc4yAYASkwsnYCR/0gO6PQdzrl1XU3uN7eX/j+yxKWkQd7zo82PZB7oq5C2/3sg/SGyqeInsRS5KW8NWmqcRn7cbXrhgc0olhPV+mWVAzV5tncBJGQDACUil8PxoSZsGT8RDU+LKL23pkK+/Gv8uq1FXUr1Wfx9o/xi3NbzHuLFzM/qz9zEucx5zdc0jPSye8yMawIg+G3DiVwIirXW2ewckYAcEISKVwPBne6wxtb4chHzit2LWpa3kn/h0SjiQQFRjF6I6j6R/Z30z9rETSTqQxP3E+8xLnsf3YdgShh3tthh/cRc+GPXG/bRrUCna1mYYKwAgIRkAqjQUvwar34ZpnoN9fy7RCvSwopViWvIx3N77LnuN7iA2O5cmOT9KzUU8zFbSCyCzIZOGBhcxLnEf84XgUijYBUQy0+zAgaTP1s9Ohz5+h1wvgZsT8SsUICEZAKg1bIcwfB+unQ/Mb4LaPnRpOtNhezLzEeUzZNIWDuQfpFNqJZzo/Q8fQjk47R03mRNEJliQt4efEn1l1aBU2ZaNJrQYMkkAGJm8jMisVPHygxQ3Q9SFo2tvVJhsqGCMgGAGpdNZ9Aj+/oD2tDpsB9Vo4tfii4iLm7J7D1ISpHMk/wrWNruWpTk8RExzj1PNUaY4lwp5F4F8fQmP1d+1+6eNDhcWF/HrwV+btm8eKlBUUFBcQ5l2XOPcgBh3aRXTmQcTdW4tG66HQcsAlr/cxVF+MgGAExCXsXwmz7oPiQrjtE2jZ3+mnyCvKY8aOGUzfOp3swmw6hXaib0Rf+kX0Izwg3Onnczl5x7RrkISvtVfbkrh7Qd0WEBoDIbFn3utEnScseUV5xKfHs2D/AhYfWExOUQ7BngH096zHoLR9tD+ajJu7FzS/3hKNOO3LylDjMAKCERCXcTwJZt4DaVvh+ld0KNwKGLPILsxm5o6ZLNi/gF2ZuwCICY45LSYtglpU37GSogLYNV/PcNv9C9iLtDC0vwtiB+sokRk79Ct9B2Rs19/7Kdy9KajXnM3BjVjr48k6WzZbThzEpmz4ufvQzyuUQelJdD+ShIebJzTvp0UjeqAJF2swAgJGQFxK4Qk9xXfbd9Dmdhj8HnhVXHjb5OxkliQvYdGBRWzO2IxCEREQQb+IfvSN6Eu7kHZVfwaX3Q5Jv+uWxrbv4WQW+DfQM9za3QUN2l5QiIvyMknY9zNrU35jbeYfJBQeoxCFm1K0PllI14ICuhUU0bkgHx9xh2Z9LdEY5NQxK0P1xwgIRkBcjlLw21uw+G8Q1k4Hoqpd8V1MR/KPsCRpCUuSlrAmbQ02u40Q3xCua3wd/SL70bVBVzzdqlBgq/QdkDATEr6B7BTw8ofYm7VoNOlV6qy2InsR245sY13aOtamrWVT+iYKigsQhJjgGLo26Er3sO50CorGPytFn+fILqjbXAcEM1NwDaVgBAQjIFWGnfNhzoPg6QN3fgGRV11+mcU2PR6w/1do1Bma9XM4rTS7MJsVKStYkrSE3w7+Rr4tnwCvAHqH96ZfRD861+9MkHdQ5Xd15aTBltm6tZGWAOKuu5Ha3aW7kbzOduVSWFxISk4KB7IPsC9rH+sPryf+cDx5tjwAWtRpQbcG3ejaoCtd6ncxPqgMl4UREIyAVCkydsKMu/XCwxv/CZ1HXXoZJ3Ngz2LY+TPsXgD5mWfS6rWEHo9Bu7tL7SorsBWw6tAqFictZlnKMrJOZgEQ4BlAeEA4EYERNA5ofNYrtFaoc7u+Dm2E396G7XNB2aFhJ2h/N7S+lSLfIFJyU0jKTuJA9gGScpJIyk4iKSeJ1BOp2JX9dDFNajc5LRhdG3Ql2Me0JgzOwwgIRkCqHPmZMPsB2LtYryeIewMuFiP9eLIeTN45D/b/pmd3+daBFgP0k3qTXnpa66r3IXUz+AZDl/t1+YFhpRZrs9uIPxzPzsydJGUnkZybTEpOCgdz9EDzKbzdvQn3D9eCEqhFJSJAC01d37oUq2KK7cVnv1vbdmXHpmwUF9uwH9qAbeOX+t3Lj/yW/Ulu0IoD9rzTgnHoxKGzRCLAM4CIwAgiAiOIDIwkIkC/RwZGmhaGoUIxAoIRkCqJvRgWvQy/vweRPeHOz8/25KsUpG7SrYyd8yBtiz4e3AxiBukB3/Bu5699UAoO/A6rP4AdP+m47W1ug6seh7D2ZTbPZreRdiKNpJwkUnJ0ayA5J/n0fkFxgRO+hDP4efqdFoZzhcIlXWsGA0ZAACMgVZrNX8PcJ/WCuDs+g/xjWjB2zoecQyBu0LgHRMdp0biURYnH9sGaqbDxv1CYq4Xqqsf1uobLcLOilOJI/hGScrSoHC84jrubO+5ivU5tK4Vbyno8ds3HLfsQ7v6heMQOxq3pdbh7+uIu7ni7e9M4oDHBPsFGJAxVDiMgGAGp8hzcoEOg5qTqfU8/PZAcPQha9Ae/updXfv5x2PiFFpOsZL1qu8fj0OEe8Pa/fPvPpfAExP8Hfn9fz6Zq0BZ6Pguxt5RrtbjB4CqqlICIyB3AK0As0E0p5fCuLiLTgZuAdKVUGwfpY4B/AiFKqSMXO68RkGpAThps+goatIOonnqmlrMptsGOH2DVB5CyVi+U6zQSuj/inGnFecdg7Uew5kM9zhPZE659Vs8MM60LQzWkqglILGAHpgJjLyAgvYBc4D/nCoiINAY+BmKAzkZADOUieR2sngJ/zNX79VuBT5BeSFfqe50z+z61z7Qmsg7Cqimw4TMoOgHRN0LPZ6BxN5dVz2BwBqUJiEva0Uqp7cBF+3qVUitEJKqU5H8BLwDfO9M2Qw2jcVdo/Jme3bX+E724ruA4HNmj3/OPgy3/wmV4BWhByUkDFLS9Q7uyD61BTh0NNZJq2RErIrcAB5VSmy8mQiLyMPAwQERERCVYZ6iWBDXWfrocYTupheSUoJT27lcXuj0MQeZ3ZqgZVJiAiMgioIGDpJeUUuVuNYhILeBFoExuXZVSHwEfge7CKu95DTUYD28IqK9fBoPhNBUmIEqp6yuo6GZAE+BU6yMciBeRbkqptAo6p8FgMBjOodp1YSmltgChp/ZFZD/QpSyD6AaDwWBwHi7xZy0iQ0UkBbgK+ElEFljHG4rIvBL5ZgCrgGgRSRGRB1xhr8FgMBjOx1WzsL4DvnNw/BAwqMT+sDKUFeVU4wwGg8FQJqp4RB2DwWAwVFWMgBgMBoOhXBgBMRgMBkO5MAJiMBgMhnJRo7zxikgGcKCcH68H1LSpwqbONQNT55rB5dQ5UikVcu7BGiUgl4OIrHfkTOxKxtS5ZmDqXDOoiDqbLiyDwWAwlAsjIAaDwWAoF0ZAys5HrjbABZg61wxMnWsGTq+zGQMxGAwGQ7kwLRCDwWAwlAsjIAaDwWAoF0ZAzkFE4kRkp4jsEZE/O0gfJSIZIrLJej3oCjudycXqbOW5U0T+EJFtIvJVZdvobMpwnf9V4hrvEpHjrrDTmZShzhEislRENopIgogMclROdaEM9Y0UkcVWXZeJSLgr7HQmIjJdRNJFZGsp6SIi71rfSYKIdLqsEyqlzMt6Ae7AXqAp4AVsBlqdk2cU8L6rba3kOrcANgJ1rP1QV9td0XU+J/+TwHRX210J1/kj4DFruxWw39V2V3B9vwFGWtt9gS9cbbcT6t0L6ARsLSV9EPAzIEAPYM3lnM+0QM6mG7BHKbVPKVUIzARucbFNFU1Z6vwQMEUplQmglEqvZBudzaVe52HAjEqxrOIoS50VEGht1wYOVaJ9zqYs9W0FLLG2lzpIr3YopVYAxy6Q5RbgP0qzGggSkbDyns8IyNk0ApJL7KdYx87lNqv5N1tEGleOaRVGWercEmgpIitFZLWIxFWadRVDWa8zIhKJDqG8xFF6NaIsdX4FGGEFe5uHbnlVV8pS383Ardb2UCBAROpWgm2upMy//bJgBOTS+QGIUkq1AxYCn7vYnsrAA92N1Qf9ND5NRIJcalHlcTcwWylV7GpDKoFhwGdKqXB0V8cXInIl3yO/BftWAAAH3ElEQVTGAr1FZCPQGzgI1ITr7DSu5B9HeTgIlGxRhFvHTqOUOqqUOmntfgx0riTbKoqL1hn9lDJXKVWklEoEdqEFpbpSljqf4m6qf/cVlK3ODwCzAJRSqwAftAO+6khZ/suHlFK3KqU6Ai9Zx6r9ZImLcCm//YtiBORs1gEtRKSJiHihbx5zS2Y4p79wMLC9Eu2rCC5aZ+B/6NYHIlIP3aW1rzKNdDJlqTMiEgPUAVZVsn0VQVnqnAT0AxCRWLSAZFSqlc6jLP/leiVaWOOB6ZVsoyuYC9xnzcbqAWQppVLLW5hLYqJXVZRSNhF5AliAnsUxXSm1TUReBdYrpeYCT4nIYMCGHqwa5TKDnUAZ67wA6C8if6Cb+M8rpY66zurLo4x1Bn3Tmams6SvVmTLWeQy6e/JZ9ID6qOpa9zLWtw/whogoYAUw2mUGOwkRmYGuVz1rLOtlwBNAKfUhemxrELAHyAPuv6zzVdPfh8FgMBhcjOnCMhgMBkO5MAJiMBgMhnJhBMRgMBgM5cIIiMFgMBjKhREQg8FgMJQLIyAGpyAiuWXI84yI1HLiOYeISCsnlvf7ZXw213pvKCKzL5AvSEQeL+95Lhdr/v8SEQkscWyIiChr3YuzzxclIvc4u9wS5T8hIn+qqPINF8YIiKEyeQa4JAEREfcLJA9BO8RzCkqpq51QxiGl1O0XyBIEuExA0GsANiulskscGwb8Zr07myjAoYCIiDPWoU2nevvsqtYYATE4FRHpY8VWmC0iO0TkS+up9ymgIbBURJZaefuLyCoRiReRb0TE3zq+X0Qmikg8cIeIPCQi60Rks4jMEZFaInI12hPAJNExO5qJSAfL2WOCiHwnInWs8paJju+xXkS2i0hXEflWRHaLyGslbM8tsT1ORLZY53zTQT2bWLZvOaeMKLFiMYhIaxFZa9mXICItgDeBZtaxSSLiLzomRbxV1i0lytkuItNEx2D5RUR8rbTmIrLIsi1eRJpZx5+3vqcEEZlQyiUaDnxfwl5/oCfajcndF7uOVtog69gG0bElfrSO95YzMVQ2ikiAVd9rrWPPio6nM1dElgCLrd/GJBHZatX/rhLnXy4i34vIPhF5U0SGW9/nllN1VkrlAftFpNuFfpeGCsLV/uvN68p4AbnWex8gC+1jxw3tBqSnlbYfqGdt10Ov/vWz9scBfy2R74USZdctsf0a8KS1/Rlwe4m0BKC3tf0q8La1vQyYaG0/jXZTHgZ4o/181T2nDgOB34Fa1n6wg/rOBe6ztkeX+GwUViwG4D1guLXtBfiWTLeOewCBJb6TPehYDVFobwcdrLRZwAhrew0w1Nr2Qbfq+qPjeYj1vf8I9HJg9wEgoMT+cOATa/t3oPOFrqN1vmSgiZVvBvCjtf0DcI217W/Vrc+pdOv4KOs7D7b2b0M7JXUH6qPdqYRZnzte4jodBCaUuIZvlyjzJWCMq/8DNfFlWiCGimCtUipFKWUHNqFvhufSA939tFJENgEjgcgS6V+X2G4jIr+KyBb0Da/1uYWJSG0gSCm13Dr0OTq4zilOuSfZAmxTSqUq7RRzH2c7lwO4HvhU6adblFKO4itcwxkni184SAd9031RRMYBkUqpfAd5BHhdRBKARWjX2vWttESl1CZrewMQZT3VN1JKfWfZVmDZ2d96bQTigRgcO7wMVkrllNgfho6VgfVeshvL0XWMAfYp7VQTznY0uRJ4y2ptBimlbKV8LwtLfKc9gRlKqWKl1GFgOdDVSltX4jrtBX6xjm/h7N9UOrp1a6hkjC8sQ0VwssR2MY5/Z4K+kZTW736ixPZnwBCl1GYRGYXl2LGcNtnPsc9ein1l4YJ+gJRSX4nIGuBGYJ6IPML5TiiHAyHoJ/8iEdmPfsovaTPo79H3AqcT4A2l1NSL2GwTETellF1EgtGR+NqK9gflDigReb6U81/we1JKvSkiP6HHWVaKyIBSsp4o5fi5nHudSl7Dkrb4AI7E2VDBmBaIoTLJAQKs7dXANSLSHEBE/ESkZSmfCwBSRcQTfcM9rzylVBaQKSLXWmn3op9my8NC4H6xZoxZN9pzWcmZMYPhDtIRkabop/V30eMO7Tj7OwAd+S/dEo/rOLsVdh5W6yFFRIZY5/C27FwA/EnOjCM1EpFQB0XsRId5BbgdHcY1UikVpZRqDCQC1zr43FmfF5Eoa/+uEvVtppTaopSaiPaGG+OgvufyK3CXiLiLSAi61bj2Avkd0RJwGAPcULEYATFUJh8B80VkqVIqA90fPsPqvlmFvuE44v/Q/f4rgR0ljs8EnrcGbJuhu8EmWeV1QI+DXDJKqfnoLq/1VvfaWAfZngZGW91qpUV0uxPYapXRBh1K9Cj66XyriEwCvgS6WOXcd079SuNetFfoBPS4RQOl1C/AV8Aqq6zZOL5x/8SZFtww4Ltz0udwgdlYVjfc4+jruAEtEFlW8jNWvRKAInTs7QSg2Brwf9ZBkd9ZeTajoz6+oJRKu1DlHXANWvQNlYzxxmsw1CBEx7P5j1Lqhssow18plWvNypoC7FZK/ctpRl6aLR2B55RS97ri/DUd0wIxGGoQSgcPmiYlFhKWg4esVtU2dBfcxcZdKpJ66BaqwQWYFojBYDAYyoVpgRgMBoOhXBgBMRgMBkO5MAJiMBgMhnJhBMRgMBgM5cIIiMFgMBjKxf8Dc0wh7m174M8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pylab.plot(distances, hf_energies, label='Hartree-Fock')\n",
    "for j in range(len(algorithms)):\n",
    "    pylab.plot(distances, energies[j], label=algorithms[j])\n",
    "pylab.xlabel('Interatomic distance (Angstrom)')\n",
    "pylab.ylabel('Energy (Hartree)')\n",
    "pylab.title('H2 Ground State Energy')\n",
    "pylab.legend(loc='upper right');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pylab.plot(distances, np.subtract(hf_energies, energies[1]), label='Hartree-Fock')\n",
    "pylab.plot(distances, np.subtract(energies[0], energies[1]), label=algorithms[0])\n",
    "pylab.xlabel('Interatomic distance (Angstrom)')\n",
    "pylab.ylabel('Energy (Hartree)')\n",
    "pylab.title('Energy difference from NumPyMinimumEigensolver')\n",
    "pylab.legend(loc='upper left');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
